package ms.core.gateway.delegate;

import ms.core.gateway.request.CreateCorpRequest;
import ms.core.gateway.request.CreateUserRequest;
import ms.core.gateway.request.UpdateCorpRequest;
import ms.core.gateway.response.SysCorpVO;
import ms.core.gateway.response.SysUserVO;
import ms.core.gateway.tool.CookieTool.Cookies;
import ms.core.gateway.tool.SessionTool.Session;

public interface IUserDelegate {
	/**用户登录cookie和session回调*/
	public void afterLogin(Session ssn, Cookies cks);
	/**用户退出信息回调*/
	public void afterLogout(String uid);

	/**【用户查询】返回帐号信息，可以附加更多定制信息输出在ext里*/
	public void formatUser(SysUserVO user);
	/**管理员添加帐号写入数据库前回调,比如为具体应用分配用户默认角色等*/
	public void beforeNewUser(CreateUserRequest user);
	/**帐号添加成功后回调,比如为具体应用分配用户默认角色等*/
	public void afterNewUser(SysUserVO user);
	/**帐号更新成功后回调,比如通知更新其他关联数据*/
	public void afterUpdateUser(SysUserVO user);
	/**删除用户回调*/
	public boolean afterDeleteUser(SysUserVO user);
	
	/**企业注册前回调,可用于验证企业是否可注册*/
	public void beforeRegisterCorp(int ctype, String corpName);
	/**新增企业前回调*/
	public void beforeNewCorp(CreateCorpRequest corp);
	/**修改企业前回调*/
	public void beforeUpdateCorp(UpdateCorpRequest corp);
	/**新增企业信息回调*/
	public void afterNewCorp(SysCorpVO corp);
	/**企业信息更新回调*/
	public void afterUpdateCorp(SysCorpVO corp);
	/**企业状态更新回调*/
	public void afterUpdateCorpState(String corpUid, int state);
	/**附加帐号信息，即在格式化企业信息输出时，可以附加更多定制信息输出*/
	public void formatCorp(SysCorpVO corp);	
}